<!-- HTML header for doxygen 1.8.6-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<title>OpenCV: cv::hdf::HDF5 Class Reference</title>
<link href="../../opencv.ico" rel="shortcut icon" type="image/x-icon" />
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../tutorial-utils.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
//<![CDATA[
MathJax.Hub.Config(
{
  TeX: {
      Macros: {
          matTT: [ "\\[ \\left|\\begin{array}{ccc} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{array}\\right| \\]", 9],
          fork: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ \\end{array} \\right.", 4],
          forkthree: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ \\end{array} \\right.", 6],
          forkfour: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ #7 & \\mbox{#8}\\\\ \\end{array} \\right.", 8],
          vecthree: ["\\begin{bmatrix} #1\\\\ #2\\\\ #3 \\end{bmatrix}", 3],
          vecthreethree: ["\\begin{bmatrix} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{bmatrix}", 9],
          cameramatrix: ["#1 = \\begin{bmatrix} f_x & 0 & c_x\\\\ 0 & f_y & c_y\\\\ 0 & 0 & 1 \\end{bmatrix}", 1],
          distcoeffs: ["(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \\tau_x, \\tau_y]]]]) \\text{ of 4, 5, 8, 12 or 14 elements}"],
          distcoeffsfisheye: ["(k_1, k_2, k_3, k_4)"],
          hdotsfor: ["\\dots", 1],
          mathbbm: ["\\mathbb{#1}", 1],
          bordermatrix: ["\\matrix{#1}", 1]
      }
  }
}
);
//]]>
</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
<link href="../../stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<!--#include virtual="/google-search.html"-->
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="../../opencv-logo-small.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">OpenCV
   &#160;<span id="projectnumber">4.5.2</span>
   </div>
   <div id="projectbrief">Open Source Computer Vision</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('../../',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="../../d2/d75/namespacecv.html">cv</a></li><li class="navelem"><a class="el" href="../../dd/d44/namespacecv_1_1hdf.html">hdf</a></li><li class="navelem"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html">HDF5</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="../../db/d64/classcv_1_1hdf_1_1HDF5-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">cv::hdf::HDF5 Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span><div class="ingroups"><a class="el" href="../../db/d77/group__hdf.html">Hierarchical Data Format I/O routines</a> &raquo; <a class="el" href="../../d6/dee/group__hdf5.html">Hierarchical Data Format version 5</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>Hierarchical Data Format version 5 interface.  
 <a href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#details">More...</a></p>

<p><code>#include &lt;opencv2/hdf/hdf5.hpp&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a99f441a3503e5515777f8d827b7aec78"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <br />
&#160;&#160;<a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a37922eb736b83d9b8f52edd7730738de">H5_UNLIMITED</a> = -1, 
<br />
&#160;&#160;<a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">H5_NONE</a> = -1, 
<br />
&#160;&#160;<a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a429aa799e6d8e9d8fde395d778f46e23">H5_GETDIMS</a> = 100, 
<br />
&#160;&#160;<a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a90ba7d9af40b1d6137c6c0b220bedf1e">H5_GETMAXDIMS</a> = 101, 
<br />
&#160;&#160;<a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78ae518bd8d16bf8c2776128a27d90d47ec">H5_GETCHUNKDIMS</a> = 102
<br />
 }</td></tr>
<tr class="separator:a99f441a3503e5515777f8d827b7aec78"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a22c3c8dad313e21ab108b777c0160f5a"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a22c3c8dad313e21ab108b777c0160f5a">~HDF5</a> ()</td></tr>
<tr class="separator:a22c3c8dad313e21ab108b777c0160f5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b1f9a5d6c7bfe011670757995c77f04"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a7b1f9a5d6c7bfe011670757995c77f04">atdelete</a> (const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;atlabel)=0</td></tr>
<tr class="separator:a7b1f9a5d6c7bfe011670757995c77f04"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ce1d93d746a79d6eabaadeae783956e"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a3ce1d93d746a79d6eabaadeae783956e">atexists</a> (const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;atlabel) const =0</td></tr>
<tr class="separator:a3ce1d93d746a79d6eabaadeae783956e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57d7777e74ec5dd83ee3c8533927dec8"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a57d7777e74ec5dd83ee3c8533927dec8">atread</a> (int *value, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;atlabel)=0</td></tr>
<tr class="separator:a57d7777e74ec5dd83ee3c8533927dec8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaeddc16f4cb1d4f1b299f477ac5b1264"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#aaeddc16f4cb1d4f1b299f477ac5b1264">atread</a> (double *value, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;atlabel)=0</td></tr>
<tr class="separator:aaeddc16f4cb1d4f1b299f477ac5b1264"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d18050b603b806de09e9e7339c066f4"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a9d18050b603b806de09e9e7339c066f4">atread</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> *value, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;atlabel)=0</td></tr>
<tr class="separator:a9d18050b603b806de09e9e7339c066f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74a8bcd8bf608a6cb2c5bde81215556a"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a74a8bcd8bf608a6cb2c5bde81215556a">atread</a> (<a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> value, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;atlabel)=0</td></tr>
<tr class="separator:a74a8bcd8bf608a6cb2c5bde81215556a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adee759dc8dd95d6423d9a236527dacb8"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#adee759dc8dd95d6423d9a236527dacb8">atwrite</a> (const int value, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;atlabel)=0</td></tr>
<tr class="separator:adee759dc8dd95d6423d9a236527dacb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ca86bdaa18f2fa2133a5e8e76026a33"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a8ca86bdaa18f2fa2133a5e8e76026a33">atwrite</a> (const double value, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;atlabel)=0</td></tr>
<tr class="separator:a8ca86bdaa18f2fa2133a5e8e76026a33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a656476fc6396e46c7ec309eb6aae30c3"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a656476fc6396e46c7ec309eb6aae30c3">atwrite</a> (const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;value, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;atlabel)=0</td></tr>
<tr class="separator:a656476fc6396e46c7ec309eb6aae30c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac62bd87e92b349d1992e770052314572"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#ac62bd87e92b349d1992e770052314572">atwrite</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> value, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;atlabel)=0</td></tr>
<tr class="separator:ac62bd87e92b349d1992e770052314572"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa56606dd84312a4c1010f0e6e918fd9b"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#aa56606dd84312a4c1010f0e6e918fd9b">close</a> ()=0</td></tr>
<tr class="memdesc:aa56606dd84312a4c1010f0e6e918fd9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close and release hdf5 object.  <a href="#aa56606dd84312a4c1010f0e6e918fd9b">More...</a><br /></td></tr>
<tr class="separator:aa56606dd84312a4c1010f0e6e918fd9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f8b59fb69fc0ffeb2abb6e413d00885"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a0f8b59fb69fc0ffeb2abb6e413d00885">dscreate</a> (const int rows, const int cols, const int type, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel) const =0</td></tr>
<tr class="separator:a0f8b59fb69fc0ffeb2abb6e413d00885"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe6abf5b602170b2f5f9a6553d6d3654"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#abe6abf5b602170b2f5f9a6553d6d3654">dscreate</a> (const int rows, const int cols, const int type, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel, const int compresslevel) const =0</td></tr>
<tr class="separator:abe6abf5b602170b2f5f9a6553d6d3654"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77a0140c5df98a3969f0cae1bd6f20e1"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a77a0140c5df98a3969f0cae1bd6f20e1">dscreate</a> (const int rows, const int cols, const int type, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel, const int compresslevel, const vector&lt; int &gt; &amp;dims_chunks) const =0</td></tr>
<tr class="separator:a77a0140c5df98a3969f0cae1bd6f20e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb40bb34c486048a1dd3a19f70a4bb32"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#adb40bb34c486048a1dd3a19f70a4bb32">dscreate</a> (const int rows, const int cols, const int type, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel, const int compresslevel, const int *dims_chunks) const =0</td></tr>
<tr class="memdesc:adb40bb34c486048a1dd3a19f70a4bb32"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create and allocate storage for two dimensional single or multi channel dataset.  <a href="#adb40bb34c486048a1dd3a19f70a4bb32">More...</a><br /></td></tr>
<tr class="separator:adb40bb34c486048a1dd3a19f70a4bb32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac92451730b86bc222ed9c859dc659d0f"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#ac92451730b86bc222ed9c859dc659d0f">dscreate</a> (const int n_dims, const int *sizes, const int type, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel) const =0</td></tr>
<tr class="separator:ac92451730b86bc222ed9c859dc659d0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae727e22a530c6bd624b36a8d2b72a889"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#ae727e22a530c6bd624b36a8d2b72a889">dscreate</a> (const int n_dims, const int *sizes, const int type, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel, const int compresslevel) const =0</td></tr>
<tr class="separator:ae727e22a530c6bd624b36a8d2b72a889"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7b3aaab7b40babf5fa208c21a2a370b"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#ab7b3aaab7b40babf5fa208c21a2a370b">dscreate</a> (const vector&lt; int &gt; &amp;sizes, const int type, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel, const int compresslevel=<a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">HDF5::H5_NONE</a>, const vector&lt; int &gt; &amp;dims_chunks=vector&lt; int &gt;()) const =0</td></tr>
<tr class="separator:ab7b3aaab7b40babf5fa208c21a2a370b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56fa3b7affaa49cb0418895f572e2841"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a56fa3b7affaa49cb0418895f572e2841">dscreate</a> (const int n_dims, const int *sizes, const int type, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel, const int compresslevel, const int *dims_chunks) const =0</td></tr>
<tr class="memdesc:a56fa3b7affaa49cb0418895f572e2841"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create and allocate storage for n-dimensional dataset, single or multichannel type.  <a href="#a56fa3b7affaa49cb0418895f572e2841">More...</a><br /></td></tr>
<tr class="separator:a56fa3b7affaa49cb0418895f572e2841"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7bb2404c7381d5dd9c16f526dc780513"><td class="memItemLeft" align="right" valign="top">virtual vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a7bb2404c7381d5dd9c16f526dc780513">dsgetsize</a> (const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel, int dims_flag=<a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a429aa799e6d8e9d8fde395d778f46e23">HDF5::H5_GETDIMS</a>) const =0</td></tr>
<tr class="memdesc:a7bb2404c7381d5dd9c16f526dc780513"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch dataset sizes.  <a href="#a7bb2404c7381d5dd9c16f526dc780513">More...</a><br /></td></tr>
<tr class="separator:a7bb2404c7381d5dd9c16f526dc780513"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e718bd24804c3a47ac2df03294b5b60"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a6e718bd24804c3a47ac2df03294b5b60">dsgettype</a> (const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel) const =0</td></tr>
<tr class="memdesc:a6e718bd24804c3a47ac2df03294b5b60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch dataset type.  <a href="#a6e718bd24804c3a47ac2df03294b5b60">More...</a><br /></td></tr>
<tr class="separator:a6e718bd24804c3a47ac2df03294b5b60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a066531c8c803361851b278667f5442a7"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a066531c8c803361851b278667f5442a7">dsinsert</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> Array, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel) const =0</td></tr>
<tr class="separator:a066531c8c803361851b278667f5442a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3df2e41bad99a4b74c915567f84a3b0"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#af3df2e41bad99a4b74c915567f84a3b0">dsinsert</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> Array, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel, const int *dims_offset) const =0</td></tr>
<tr class="separator:af3df2e41bad99a4b74c915567f84a3b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12a80b308989a80f72cdfe88f1b6e935"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a12a80b308989a80f72cdfe88f1b6e935">dsinsert</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> Array, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel, const vector&lt; int &gt; &amp;dims_offset, const vector&lt; int &gt; &amp;dims_counts=vector&lt; int &gt;()) const =0</td></tr>
<tr class="separator:a12a80b308989a80f72cdfe88f1b6e935"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ed41a770f3b262ba62d8e51ff91e9bd"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a8ed41a770f3b262ba62d8e51ff91e9bd">dsinsert</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> Array, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel, const int *dims_offset, const int *dims_counts) const =0</td></tr>
<tr class="memdesc:a8ed41a770f3b262ba62d8e51ff91e9bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert or overwrite a <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">Mat</a> object into specified dataset and auto expand dataset size if <b>unlimited</b> property allows.  <a href="#a8ed41a770f3b262ba62d8e51ff91e9bd">More...</a><br /></td></tr>
<tr class="separator:a8ed41a770f3b262ba62d8e51ff91e9bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc0f24683dbce852884f2147a68ddae3"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#afc0f24683dbce852884f2147a68ddae3">dsread</a> (<a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> Array, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel) const =0</td></tr>
<tr class="separator:afc0f24683dbce852884f2147a68ddae3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6088901b1c715aad6164b27b83262479"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a6088901b1c715aad6164b27b83262479">dsread</a> (<a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> Array, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel, const int *dims_offset) const =0</td></tr>
<tr class="separator:a6088901b1c715aad6164b27b83262479"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a849ed15c7d4697f562c2f230332b16fc"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a849ed15c7d4697f562c2f230332b16fc">dsread</a> (<a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> Array, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel, const vector&lt; int &gt; &amp;dims_offset, const vector&lt; int &gt; &amp;dims_counts=vector&lt; int &gt;()) const =0</td></tr>
<tr class="separator:a849ed15c7d4697f562c2f230332b16fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61e2bfc6d35271a160fdfec69c1a2157"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a61e2bfc6d35271a160fdfec69c1a2157">dsread</a> (<a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> Array, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel, const int *dims_offset, const int *dims_counts) const =0</td></tr>
<tr class="memdesc:a61e2bfc6d35271a160fdfec69c1a2157"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read specific dataset from hdf5 file into <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">Mat</a> object.  <a href="#a61e2bfc6d35271a160fdfec69c1a2157">More...</a><br /></td></tr>
<tr class="separator:a61e2bfc6d35271a160fdfec69c1a2157"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc4bb3ba821d6ea52a7d8b6b9f623c85"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#adc4bb3ba821d6ea52a7d8b6b9f623c85">dswrite</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> Array, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel) const =0</td></tr>
<tr class="separator:adc4bb3ba821d6ea52a7d8b6b9f623c85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a575120ad1a8857b1fa2db4cb05488e81"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a575120ad1a8857b1fa2db4cb05488e81">dswrite</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> Array, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel, const int *dims_offset) const =0</td></tr>
<tr class="separator:a575120ad1a8857b1fa2db4cb05488e81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a996681e3faff692b8d94502164599ad3"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a996681e3faff692b8d94502164599ad3">dswrite</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> Array, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel, const vector&lt; int &gt; &amp;dims_offset, const vector&lt; int &gt; &amp;dims_counts=vector&lt; int &gt;()) const =0</td></tr>
<tr class="separator:a996681e3faff692b8d94502164599ad3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0aa86fc0ec7a74dadd53da977ce0d181"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a0aa86fc0ec7a74dadd53da977ce0d181">dswrite</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> Array, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;dslabel, const int *dims_offset, const int *dims_counts) const =0</td></tr>
<tr class="memdesc:a0aa86fc0ec7a74dadd53da977ce0d181"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write or overwrite a <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">Mat</a> object into specified dataset of hdf5 file.  <a href="#a0aa86fc0ec7a74dadd53da977ce0d181">More...</a><br /></td></tr>
<tr class="separator:a0aa86fc0ec7a74dadd53da977ce0d181"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a02caf1f2f90a10221954c55e1c4d81"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a8a02caf1f2f90a10221954c55e1c4d81">grcreate</a> (const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;grlabel)=0</td></tr>
<tr class="memdesc:a8a02caf1f2f90a10221954c55e1c4d81"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a group.  <a href="#a8a02caf1f2f90a10221954c55e1c4d81">More...</a><br /></td></tr>
<tr class="separator:a8a02caf1f2f90a10221954c55e1c4d81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add5b1b96093a2a28994627cd545e3d9e"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#add5b1b96093a2a28994627cd545e3d9e">hlexists</a> (const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;label) const =0</td></tr>
<tr class="memdesc:add5b1b96093a2a28994627cd545e3d9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if label exists or not.  <a href="#add5b1b96093a2a28994627cd545e3d9e">More...</a><br /></td></tr>
<tr class="separator:add5b1b96093a2a28994627cd545e3d9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae51728375392082e849e035ff940a554"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#ae51728375392082e849e035ff940a554">kpcreate</a> (const int size, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;kplabel, const int compresslevel=<a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">H5_NONE</a>, const int chunks=<a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">H5_NONE</a>) const =0</td></tr>
<tr class="memdesc:ae51728375392082e849e035ff940a554"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create and allocate special storage for <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html" title="Data structure for salient point detectors. ">cv::KeyPoint</a> dataset.  <a href="#ae51728375392082e849e035ff940a554">More...</a><br /></td></tr>
<tr class="separator:ae51728375392082e849e035ff940a554"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab09e36ab1f7a2336f1ef7b37d9b48752"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#ab09e36ab1f7a2336f1ef7b37d9b48752">kpgetsize</a> (const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;kplabel, int dims_flag=<a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a429aa799e6d8e9d8fde395d778f46e23">HDF5::H5_GETDIMS</a>) const =0</td></tr>
<tr class="memdesc:ab09e36ab1f7a2336f1ef7b37d9b48752"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch keypoint dataset size.  <a href="#ab09e36ab1f7a2336f1ef7b37d9b48752">More...</a><br /></td></tr>
<tr class="separator:ab09e36ab1f7a2336f1ef7b37d9b48752"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d9bbb04a2ae548824ec9b2e2b9bea94"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a9d9bbb04a2ae548824ec9b2e2b9bea94">kpinsert</a> (const vector&lt; <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html">KeyPoint</a> &gt; keypoints, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;kplabel, const int offset=<a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">H5_NONE</a>, const int counts=<a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">H5_NONE</a>) const =0</td></tr>
<tr class="memdesc:a9d9bbb04a2ae548824ec9b2e2b9bea94"><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert or overwrite list of <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html" title="Data structure for salient point detectors. ">KeyPoint</a> into specified dataset and autoexpand dataset size if <b>unlimited</b> property allows.  <a href="#a9d9bbb04a2ae548824ec9b2e2b9bea94">More...</a><br /></td></tr>
<tr class="separator:a9d9bbb04a2ae548824ec9b2e2b9bea94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab88cf9b28686de24808f5e2c15a0f135"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#ab88cf9b28686de24808f5e2c15a0f135">kpread</a> (vector&lt; <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html">KeyPoint</a> &gt; &amp;keypoints, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;kplabel, const int offset=<a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">H5_NONE</a>, const int counts=<a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">H5_NONE</a>) const =0</td></tr>
<tr class="memdesc:ab88cf9b28686de24808f5e2c15a0f135"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read specific keypoint dataset from hdf5 file into vector&lt;KeyPoint&gt; object.  <a href="#ab88cf9b28686de24808f5e2c15a0f135">More...</a><br /></td></tr>
<tr class="separator:ab88cf9b28686de24808f5e2c15a0f135"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af17cf2bb863e96446ade6da3cd0e63eb"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#af17cf2bb863e96446ade6da3cd0e63eb">kpwrite</a> (const vector&lt; <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html">KeyPoint</a> &gt; keypoints, const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;kplabel, const int offset=<a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">H5_NONE</a>, const int counts=<a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">H5_NONE</a>) const =0</td></tr>
<tr class="memdesc:af17cf2bb863e96446ade6da3cd0e63eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write or overwrite list of <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html" title="Data structure for salient point detectors. ">KeyPoint</a> into specified dataset of hdf5 file.  <a href="#af17cf2bb863e96446ade6da3cd0e63eb">More...</a><br /></td></tr>
<tr class="separator:af17cf2bb863e96446ade6da3cd0e63eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Hierarchical Data Format version 5 interface. </p>
<p>Notice that this module is compiled only when hdf5 is correctly installed. </p>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="a99f441a3503e5515777f8d827b7aec78"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a99f441a3503e5515777f8d827b7aec78">&#9670;&nbsp;</a></span>anonymous enum</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">anonymous enum</td>
        </tr>
      </table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a99f441a3503e5515777f8d827b7aec78a37922eb736b83d9b8f52edd7730738de"></a>H5_UNLIMITED&#160;</td><td class="fielddoc"><p>The dimension size is unlimited,. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a0f8b59fb69fc0ffeb2abb6e413d00885">dscreate()</a> </dd></dl>
</td></tr>
<tr><td class="fieldname"><a id="a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654"></a>H5_NONE&#160;</td><td class="fielddoc"><p>No compression,. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a0f8b59fb69fc0ffeb2abb6e413d00885">dscreate()</a> </dd></dl>
</td></tr>
<tr><td class="fieldname"><a id="a99f441a3503e5515777f8d827b7aec78a429aa799e6d8e9d8fde395d778f46e23"></a>H5_GETDIMS&#160;</td><td class="fielddoc"><p>Get the dimension information of a dataset. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a7bb2404c7381d5dd9c16f526dc780513" title="Fetch dataset sizes. ">dsgetsize()</a> </dd></dl>
</td></tr>
<tr><td class="fieldname"><a id="a99f441a3503e5515777f8d827b7aec78a90ba7d9af40b1d6137c6c0b220bedf1e"></a>H5_GETMAXDIMS&#160;</td><td class="fielddoc"><p>Get the maximum dimension information of a dataset. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a7bb2404c7381d5dd9c16f526dc780513" title="Fetch dataset sizes. ">dsgetsize()</a> </dd></dl>
</td></tr>
<tr><td class="fieldname"><a id="a99f441a3503e5515777f8d827b7aec78ae518bd8d16bf8c2776128a27d90d47ec"></a>H5_GETCHUNKDIMS&#160;</td><td class="fielddoc"><p>Get the chunk sizes of a dataset. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a7bb2404c7381d5dd9c16f526dc780513" title="Fetch dataset sizes. ">dsgetsize()</a> </dd></dl>
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a22c3c8dad313e21ab108b777c0160f5a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a22c3c8dad313e21ab108b777c0160f5a">&#9670;&nbsp;</a></span>~HDF5()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual cv::hdf::HDF5::~HDF5 </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a7b1f9a5d6c7bfe011670757995c77f04"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b1f9a5d6c7bfe011670757995c77f04">&#9670;&nbsp;</a></span>atdelete()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::atdelete </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>atlabel</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Delete an attribute from the root group.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">atlabel</td><td>the attribute to be deleted.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd><a class="el" href="../../db/de0/group__core__utils.html#ga5b48c333c777666e076bd7052799f891" title="Call the error handler. ">CV_Error()</a> is called if the given attribute does not exist. Use <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a3ce1d93d746a79d6eabaadeae783956e">atexists()</a> to check whether it exists or not beforehand.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a3ce1d93d746a79d6eabaadeae783956e">atexists</a>, <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#adee759dc8dd95d6423d9a236527dacb8">atwrite</a>, <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a57d7777e74ec5dd83ee3c8533927dec8">atread</a> </dd></dl>

</div>
</div>
<a id="a3ce1d93d746a79d6eabaadeae783956e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ce1d93d746a79d6eabaadeae783956e">&#9670;&nbsp;</a></span>atexists()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool cv::hdf::HDF5::atexists </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>atlabel</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Check whether a given attribute exits or not in the root group.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">atlabel</td><td>the attribute name to be checked. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the attribute exists, false otherwise.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a7b1f9a5d6c7bfe011670757995c77f04">atdelete</a>, <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#adee759dc8dd95d6423d9a236527dacb8">atwrite</a>, <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a57d7777e74ec5dd83ee3c8533927dec8">atread</a> </dd></dl>

</div>
</div>
<a id="a57d7777e74ec5dd83ee3c8533927dec8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a57d7777e74ec5dd83ee3c8533927dec8">&#9670;&nbsp;</a></span>atread() <span class="overload">[1/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::atread </td>
          <td>(</td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>atlabel</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Read an attribute from the root group.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">value</td><td>address where the attribute is read into </td></tr>
    <tr><td class="paramname">atlabel</td><td>attribute name</td></tr>
  </table>
  </dd>
</dl>
<p>The following example demonstrates how to read an attribute of type <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">cv::String</a>:</p>
<div class="fragment"><div class="line">    <a class="code" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> expected_attr_str;</div><div class="line">    h5io-&gt;atread(&amp;expected_attr_str, attr_str_name);</div></div><!-- fragment --> <dl class="section note"><dt>Note</dt><dd>The attribute MUST exist, otherwise <a class="el" href="../../db/de0/group__core__utils.html#ga5b48c333c777666e076bd7052799f891" title="Call the error handler. ">CV_Error()</a> is called. Use <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a3ce1d93d746a79d6eabaadeae783956e">atexists()</a> to check if it exists beforehand.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a3ce1d93d746a79d6eabaadeae783956e">atexists</a>, <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a7b1f9a5d6c7bfe011670757995c77f04">atdelete</a>, <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#adee759dc8dd95d6423d9a236527dacb8">atwrite</a> </dd></dl>

</div>
</div>
<a id="aaeddc16f4cb1d4f1b299f477ac5b1264"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaeddc16f4cb1d4f1b299f477ac5b1264">&#9670;&nbsp;</a></span>atread() <span class="overload">[2/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::atread </td>
          <td>(</td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>atlabel</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>

</div>
</div>
<a id="a9d18050b603b806de09e9e7339c066f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9d18050b603b806de09e9e7339c066f4">&#9670;&nbsp;</a></span>atread() <span class="overload">[3/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::atread </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> *&#160;</td>
          <td class="paramname"><em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>atlabel</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>

</div>
</div>
<a id="a74a8bcd8bf608a6cb2c5bde81215556a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a74a8bcd8bf608a6cb2c5bde81215556a">&#9670;&nbsp;</a></span>atread() <span class="overload">[4/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::atread </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a>&#160;</td>
          <td class="paramname"><em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>atlabel</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Read an attribute from the root group.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">value</td><td>attribute value. Currently, only n-d continuous multi-channel arrays are supported. </td></tr>
    <tr><td class="paramname">atlabel</td><td>attribute name.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The attribute MUST exist, otherwise <a class="el" href="../../db/de0/group__core__utils.html#ga5b48c333c777666e076bd7052799f891" title="Call the error handler. ">CV_Error()</a> is called. Use <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a3ce1d93d746a79d6eabaadeae783956e">atexists()</a> to check if it exists beforehand.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a3ce1d93d746a79d6eabaadeae783956e">atexists</a>, <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a7b1f9a5d6c7bfe011670757995c77f04">atdelete</a>, <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#adee759dc8dd95d6423d9a236527dacb8">atwrite</a> </dd></dl>

</div>
</div>
<a id="adee759dc8dd95d6423d9a236527dacb8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adee759dc8dd95d6423d9a236527dacb8">&#9670;&nbsp;</a></span>atwrite() <span class="overload">[1/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::atwrite </td>
          <td>(</td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>atlabel</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Write an attribute inside the root group.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">value</td><td>attribute value. </td></tr>
    <tr><td class="paramname">atlabel</td><td>attribute name.</td></tr>
  </table>
  </dd>
</dl>
<p>The following example demonstrates how to write an attribute of type <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">cv::String</a>:</p>
<div class="fragment"><div class="line">    <a class="code" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> attr_str_name = <span class="stringliteral">&quot;string attribute&quot;</span>;</div><div class="line">    <a class="code" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> attr_str = <span class="stringliteral">&quot;Hello HDF5 from OpenCV!&quot;</span>;</div><div class="line">    <span class="keywordflow">if</span> (!h5io-&gt;atexists(attr_str_name))</div><div class="line">        h5io-&gt;atwrite(attr_str, attr_str_name);</div></div><!-- fragment --> <dl class="section note"><dt>Note</dt><dd><a class="el" href="../../db/de0/group__core__utils.html#ga5b48c333c777666e076bd7052799f891" title="Call the error handler. ">CV_Error()</a> is called if the given attribute already exists. Use <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a3ce1d93d746a79d6eabaadeae783956e">atexists()</a> to check whether it exists or not beforehand. And use <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a7b1f9a5d6c7bfe011670757995c77f04">atdelete()</a> to delete it if it already exists.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a3ce1d93d746a79d6eabaadeae783956e">atexists</a>, <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a7b1f9a5d6c7bfe011670757995c77f04">atdelete</a>, <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a57d7777e74ec5dd83ee3c8533927dec8">atread</a> </dd></dl>

</div>
</div>
<a id="a8ca86bdaa18f2fa2133a5e8e76026a33"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ca86bdaa18f2fa2133a5e8e76026a33">&#9670;&nbsp;</a></span>atwrite() <span class="overload">[2/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::atwrite </td>
          <td>(</td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>atlabel</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>

</div>
</div>
<a id="a656476fc6396e46c7ec309eb6aae30c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a656476fc6396e46c7ec309eb6aae30c3">&#9670;&nbsp;</a></span>atwrite() <span class="overload">[3/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::atwrite </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>atlabel</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>

</div>
</div>
<a id="ac62bd87e92b349d1992e770052314572"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac62bd87e92b349d1992e770052314572">&#9670;&nbsp;</a></span>atwrite() <span class="overload">[4/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::atwrite </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>atlabel</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Write an attribute into the root group.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">value</td><td>attribute value. Currently, only n-d continuous multi-channel arrays are supported. </td></tr>
    <tr><td class="paramname">atlabel</td><td>attribute name.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd><a class="el" href="../../db/de0/group__core__utils.html#ga5b48c333c777666e076bd7052799f891" title="Call the error handler. ">CV_Error()</a> is called if the given attribute already exists. Use <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a3ce1d93d746a79d6eabaadeae783956e">atexists()</a> to check whether it exists or not beforehand. And use <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a7b1f9a5d6c7bfe011670757995c77f04">atdelete()</a> to delete it if it already exists.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a3ce1d93d746a79d6eabaadeae783956e">atexists</a>, <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a7b1f9a5d6c7bfe011670757995c77f04">atdelete</a>, <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a57d7777e74ec5dd83ee3c8533927dec8">atread</a>. </dd></dl>

</div>
</div>
<a id="aa56606dd84312a4c1010f0e6e918fd9b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa56606dd84312a4c1010f0e6e918fd9b">&#9670;&nbsp;</a></span>close()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::close </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Close and release hdf5 object. </p>

</div>
</div>
<a id="a0f8b59fb69fc0ffeb2abb6e413d00885"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0f8b59fb69fc0ffeb2abb6e413d00885">&#9670;&nbsp;</a></span>dscreate() <span class="overload">[1/8]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dscreate </td>
          <td>(</td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>rows</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>cols</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>

</div>
</div>
<a id="abe6abf5b602170b2f5f9a6553d6d3654"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe6abf5b602170b2f5f9a6553d6d3654">&#9670;&nbsp;</a></span>dscreate() <span class="overload">[2/8]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dscreate </td>
          <td>(</td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>rows</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>cols</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>compresslevel</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>

</div>
</div>
<a id="a77a0140c5df98a3969f0cae1bd6f20e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77a0140c5df98a3969f0cae1bd6f20e1">&#9670;&nbsp;</a></span>dscreate() <span class="overload">[3/8]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dscreate </td>
          <td>(</td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>rows</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>cols</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>compresslevel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>dims_chunks</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>

</div>
</div>
<a id="adb40bb34c486048a1dd3a19f70a4bb32"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adb40bb34c486048a1dd3a19f70a4bb32">&#9670;&nbsp;</a></span>dscreate() <span class="overload">[4/8]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dscreate </td>
          <td>(</td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>rows</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>cols</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>compresslevel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>dims_chunks</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Create and allocate storage for two dimensional single or multi channel dataset. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rows</td><td>declare amount of rows </td></tr>
    <tr><td class="paramname">cols</td><td>declare amount of columns </td></tr>
    <tr><td class="paramname">type</td><td>type to be used, e.g, CV_8UC3, CV_32FC1 and etc. </td></tr>
    <tr><td class="paramname">dslabel</td><td>specify the hdf5 dataset label. Existing dataset label will cause an error. </td></tr>
    <tr><td class="paramname">compresslevel</td><td>specify the compression level 0-9 to be used, H5_NONE is the default value and means no compression. The value 0 also means no compression. A value 9 indicating the best compression ration. Note that a higher compression level indicates a higher computational cost. It relies on GNU gzip for compression. </td></tr>
    <tr><td class="paramname">dims_chunks</td><td>each array member specifies the chunking size to be used for block I/O, by default NULL means none at all.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>If the dataset already exists, an exception will be thrown (<a class="el" href="../../db/de0/group__core__utils.html#ga5b48c333c777666e076bd7052799f891" title="Call the error handler. ">CV_Error()</a> is called).</dd></dl>
<ul>
<li>Existence of the dataset can be checked using <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#add5b1b96093a2a28994627cd545e3d9e" title="Check if label exists or not. ">hlexists()</a>, see in this example: <div class="fragment"><div class="line"><span class="comment">// open / autocreate hdf5 file</span></div><div class="line"><a class="code" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">cv::Ptr&lt;cv::hdf::HDF5&gt;</a> h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">cv::hdf::open</a>( <span class="stringliteral">&quot;mytest.h5&quot;</span> );</div><div class="line"><span class="comment">// create space for 100x50 CV_64FC2 matrix</span></div><div class="line"><span class="keywordflow">if</span> ( ! h5io-&gt;hlexists( <span class="stringliteral">&quot;hilbert&quot;</span> ) )</div><div class="line">  h5io-&gt;dscreate( 100, 50, <a class="code" href="../../d1/d1b/group__core__hal__interface.html#ga90505db617283cb4ac14f0870ef57021">CV_64FC2</a>, <span class="stringliteral">&quot;hilbert&quot;</span> );</div><div class="line"><span class="keywordflow">else</span></div><div class="line">  printf(<span class="stringliteral">&quot;DS already created, skipping\n&quot;</span> );</div><div class="line"><span class="comment">// release</span></div><div class="line">h5io-&gt;close();</div></div><!-- fragment --></li>
</ul>
<dl class="section note"><dt>Note</dt><dd>Activating compression requires internal chunking. Chunking can significantly improve access speed both at read and write time, especially for windowed access logic that shifts offset inside dataset. If no custom chunking is specified, the default one will be invoked by the size of the <b>whole</b> dataset as a single big chunk of data.</dd></dl>
<ul>
<li>See example of level 9 compression using internal default chunking: <div class="fragment"><div class="line"><span class="comment">// open / autocreate hdf5 file</span></div><div class="line"><a class="code" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">cv::Ptr&lt;cv::hdf::HDF5&gt;</a> h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">cv::hdf::open</a>( <span class="stringliteral">&quot;mytest.h5&quot;</span> );</div><div class="line"><span class="comment">// create level 9 compressed space for CV_64FC2 matrix</span></div><div class="line"><span class="keywordflow">if</span> ( ! h5io-&gt;hlexists( <span class="stringliteral">&quot;hilbert&quot;</span>, 9 ) )</div><div class="line">  h5io-&gt;dscreate( 100, 50, <a class="code" href="../../d1/d1b/group__core__hal__interface.html#ga90505db617283cb4ac14f0870ef57021">CV_64FC2</a>, <span class="stringliteral">&quot;hilbert&quot;</span>, 9 );</div><div class="line"><span class="keywordflow">else</span></div><div class="line">  printf(<span class="stringliteral">&quot;DS already created, skipping\n&quot;</span> );</div><div class="line"><span class="comment">// release</span></div><div class="line">h5io-&gt;close();</div></div><!-- fragment --></li>
</ul>
<dl class="section note"><dt>Note</dt><dd>A value of H5_UNLIMITED for <b>rows</b> or <b>cols</b> or both means <b>unlimited</b> data on the specified dimension, thus, it is possible to expand anytime such a dataset on row, col or on both directions. Presence of H5_UNLIMITED on any dimension <b>requires</b> to define custom chunking. No default chunking will be defined in the unlimited scenario since default size on that dimension will be zero, and will grow once dataset is written. Writing into a dataset that has H5_UNLIMITED on some of its dimensions requires <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a066531c8c803361851b278667f5442a7">dsinsert()</a> that allows growth on unlimited dimensions, instead of <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#adc4bb3ba821d6ea52a7d8b6b9f623c85">dswrite()</a> that allows to write only in predefined data space.</dd></dl>
<ul>
<li>Example below shows no compression but unlimited dimension on cols using 100x100 internal chunking: <div class="fragment"><div class="line"><span class="comment">// open / autocreate hdf5 file</span></div><div class="line"><a class="code" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">cv::Ptr&lt;cv::hdf::HDF5&gt;</a> h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">cv::hdf::open</a>( <span class="stringliteral">&quot;mytest.h5&quot;</span> );</div><div class="line"><span class="comment">// create level 9 compressed space for CV_64FC2 matrix</span></div><div class="line"><span class="keywordtype">int</span> chunks[2] = { 100, 100 };</div><div class="line">h5io-&gt;dscreate( 100, <a class="code" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a37922eb736b83d9b8f52edd7730738de">cv::hdf::HDF5::H5_UNLIMITED</a>, <a class="code" href="../../d1/d1b/group__core__hal__interface.html#ga90505db617283cb4ac14f0870ef57021">CV_64FC2</a>, <span class="stringliteral">&quot;hilbert&quot;</span>, <a class="code" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">cv::hdf::HDF5::H5_NONE</a>, chunks );</div><div class="line"><span class="comment">// release</span></div><div class="line">h5io-&gt;close();</div></div><!-- fragment --></li>
</ul>
<dl class="section note"><dt>Note</dt><dd>It is <b>not</b> thread safe, it must be called only once at dataset creation, otherwise an exception will occur. Multiple datasets inside a single hdf5 file are allowed. </dd></dl>

</div>
</div>
<a id="ac92451730b86bc222ed9c859dc659d0f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac92451730b86bc222ed9c859dc659d0f">&#9670;&nbsp;</a></span>dscreate() <span class="overload">[5/8]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dscreate </td>
          <td>(</td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>n_dims</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>sizes</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ae727e22a530c6bd624b36a8d2b72a889"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae727e22a530c6bd624b36a8d2b72a889">&#9670;&nbsp;</a></span>dscreate() <span class="overload">[6/8]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dscreate </td>
          <td>(</td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>n_dims</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>sizes</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>compresslevel</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ab7b3aaab7b40babf5fa208c21a2a370b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab7b3aaab7b40babf5fa208c21a2a370b">&#9670;&nbsp;</a></span>dscreate() <span class="overload">[7/8]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dscreate </td>
          <td>(</td>
          <td class="paramtype">const vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>sizes</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>compresslevel</em> = <code><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">HDF5::H5_NONE</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>dims_chunks</em> = <code>vector&lt;&#160;int&#160;&gt;()</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a56fa3b7affaa49cb0418895f572e2841"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56fa3b7affaa49cb0418895f572e2841">&#9670;&nbsp;</a></span>dscreate() <span class="overload">[8/8]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dscreate </td>
          <td>(</td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>n_dims</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>sizes</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>compresslevel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>dims_chunks</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Create and allocate storage for n-dimensional dataset, single or multichannel type. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">n_dims</td><td>declare number of dimensions </td></tr>
    <tr><td class="paramname">sizes</td><td>array containing sizes for each dimensions </td></tr>
    <tr><td class="paramname">type</td><td>type to be used, e.g., CV_8UC3, CV_32FC1, etc. </td></tr>
    <tr><td class="paramname">dslabel</td><td>specify the hdf5 dataset label. Existing dataset label will cause an error. </td></tr>
    <tr><td class="paramname">compresslevel</td><td>specify the compression level 0-9 to be used, H5_NONE is the default value and means no compression. The value 0 also means no compression. A value 9 indicating the best compression ration. Note that a higher compression level indicates a higher computational cost. It relies on GNU gzip for compression. </td></tr>
    <tr><td class="paramname">dims_chunks</td><td>each array member specifies chunking sizes to be used for block I/O, by default NULL means none at all. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>If the dataset already exists, an exception will be thrown. Existence of the dataset can be checked using <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#add5b1b96093a2a28994627cd545e3d9e" title="Check if label exists or not. ">hlexists()</a>.</dd></dl>
<ul>
<li>See example below that creates a 6 dimensional storage space: <div class="fragment"><div class="line"><span class="comment">// open / autocreate hdf5 file</span></div><div class="line"><a class="code" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">cv::Ptr&lt;cv::hdf::HDF5&gt;</a> h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">cv::hdf::open</a>( <span class="stringliteral">&quot;mytest.h5&quot;</span> );</div><div class="line"><span class="comment">// create space for 6 dimensional CV_64FC2 matrix</span></div><div class="line"><span class="keywordflow">if</span> ( ! h5io-&gt;hlexists( <span class="stringliteral">&quot;nddata&quot;</span> ) )</div><div class="line">  <span class="keywordtype">int</span> n_dims = 5;</div><div class="line">  <span class="keywordtype">int</span> dsdims[n_dims] = { 100, 100, 20, 10, 5, 5 };</div><div class="line">  h5io-&gt;dscreate( n_dims, sizes, <a class="code" href="../../d1/d1b/group__core__hal__interface.html#ga90505db617283cb4ac14f0870ef57021">CV_64FC2</a>, <span class="stringliteral">&quot;nddata&quot;</span> );</div><div class="line"><span class="keywordflow">else</span></div><div class="line">  printf(<span class="stringliteral">&quot;DS already created, skipping\n&quot;</span> );</div><div class="line"><span class="comment">// release</span></div><div class="line">h5io-&gt;close();</div></div><!-- fragment --></li>
</ul>
<dl class="section note"><dt>Note</dt><dd>Activating compression requires internal chunking. Chunking can significantly improve access speed both at read and write time, especially for windowed access logic that shifts offset inside dataset. If no custom chunking is specified, the default one will be invoked by the size of <b>whole</b> dataset as single big chunk of data.</dd></dl>
<ul>
<li>See example of level 0 compression (shallow) using chunking against the first dimension, thus storage will consists of 100 chunks of data: <div class="fragment"><div class="line"><span class="comment">// open / autocreate hdf5 file</span></div><div class="line"><a class="code" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">cv::Ptr&lt;cv::hdf::HDF5&gt;</a> h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">cv::hdf::open</a>( <span class="stringliteral">&quot;mytest.h5&quot;</span> );</div><div class="line"><span class="comment">// create space for 6 dimensional CV_64FC2 matrix</span></div><div class="line"><span class="keywordflow">if</span> ( ! h5io-&gt;hlexists( <span class="stringliteral">&quot;nddata&quot;</span> ) )</div><div class="line">  <span class="keywordtype">int</span> n_dims = 5;</div><div class="line">  <span class="keywordtype">int</span> dsdims[n_dims] = { 100, 100, 20, 10, 5, 5 };</div><div class="line">  <span class="keywordtype">int</span> chunks[n_dims] = {   1, 100, 20, 10, 5, 5 };</div><div class="line">  h5io-&gt;dscreate( n_dims, dsdims, <a class="code" href="../../d1/d1b/group__core__hal__interface.html#ga90505db617283cb4ac14f0870ef57021">CV_64FC2</a>, <span class="stringliteral">&quot;nddata&quot;</span>, 0, chunks );</div><div class="line"><span class="keywordflow">else</span></div><div class="line">  printf(<span class="stringliteral">&quot;DS already created, skipping\n&quot;</span> );</div><div class="line"><span class="comment">// release</span></div><div class="line">h5io-&gt;close();</div></div><!-- fragment --></li>
</ul>
<dl class="section note"><dt>Note</dt><dd>A value of H5_UNLIMITED inside the <b>sizes</b> array means <b>unlimited</b> data on that dimension, thus it is possible to expand anytime such dataset on those unlimited directions. Presence of H5_UNLIMITED on any dimension requires** to define custom chunking. No default chunking will be defined in unlimited scenario since the default size on that dimension will be zero, and will grow once dataset is written. Writing into dataset that has H5_UNLIMITED on some of its dimension requires <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a066531c8c803361851b278667f5442a7">dsinsert()</a> instead of <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#adc4bb3ba821d6ea52a7d8b6b9f623c85">dswrite()</a> that allows growth on unlimited dimension instead of <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#adc4bb3ba821d6ea52a7d8b6b9f623c85">dswrite()</a> that allows to write only in predefined data space.</dd></dl>
<ul>
<li>Example below shows a 3 dimensional dataset using no compression with all unlimited sizes and one unit chunking: <div class="fragment"><div class="line"><span class="comment">// open / autocreate hdf5 file</span></div><div class="line"><a class="code" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">cv::Ptr&lt;cv::hdf::HDF5&gt;</a> h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">cv::hdf::open</a>( <span class="stringliteral">&quot;mytest.h5&quot;</span> );</div><div class="line"><span class="keywordtype">int</span> n_dims = 3;</div><div class="line"><span class="keywordtype">int</span> chunks[n_dims] = { 1, 1, 1 };</div><div class="line"><span class="keywordtype">int</span> dsdims[n_dims] = { <a class="code" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a37922eb736b83d9b8f52edd7730738de">cv::hdf::HDF5::H5_UNLIMITED</a>, <a class="code" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a37922eb736b83d9b8f52edd7730738de">cv::hdf::HDF5::H5_UNLIMITED</a>, cv::hdf::HDF5::H5_UNLIMITED };</div><div class="line">h5io-&gt;dscreate( n_dims, dsdims, <a class="code" href="../../d1/d1b/group__core__hal__interface.html#ga90505db617283cb4ac14f0870ef57021">CV_64FC2</a>, <span class="stringliteral">&quot;nddata&quot;</span>, <a class="code" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">cv::hdf::HDF5::H5_NONE</a>, chunks );</div><div class="line"><span class="comment">// release</span></div><div class="line">h5io-&gt;close();</div></div><!-- fragment --> </li>
</ul>

</div>
</div>
<a id="a7bb2404c7381d5dd9c16f526dc780513"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7bb2404c7381d5dd9c16f526dc780513">&#9670;&nbsp;</a></span>dsgetsize()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual vector&lt;int&gt; cv::hdf::HDF5::dsgetsize </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>dims_flag</em> = <code><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a429aa799e6d8e9d8fde395d778f46e23">HDF5::H5_GETDIMS</a></code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Fetch dataset sizes. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">dslabel</td><td>specify the hdf5 dataset label to be measured. </td></tr>
    <tr><td class="paramname">dims_flag</td><td>will fetch dataset dimensions on H5_GETDIMS, dataset maximum dimensions on H5_GETMAXDIMS, and chunk sizes on H5_GETCHUNKDIMS.</td></tr>
  </table>
  </dd>
</dl>
<p>Returns vector object containing sizes of dataset on each dimensions.</p>
<dl class="section note"><dt>Note</dt><dd>Resulting vector size will match the amount of dataset dimensions. By default H5_GETDIMS will return actual dataset dimensions. Using H5_GETMAXDIM flag will get maximum allowed dimension which normally match actual dataset dimension but can hold H5_UNLIMITED value if dataset was prepared in <b>unlimited</b> mode on some of its dimension. It can be useful to check existing dataset dimensions before overwrite it as whole or subset. Trying to write with oversized source data into dataset target will thrown exception. The H5_GETCHUNKDIMS will return the dimension of chunk if dataset was created with chunking options otherwise returned vector size will be zero. </dd></dl>

</div>
</div>
<a id="a6e718bd24804c3a47ac2df03294b5b60"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e718bd24804c3a47ac2df03294b5b60">&#9670;&nbsp;</a></span>dsgettype()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int cv::hdf::HDF5::dsgettype </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Fetch dataset type. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">dslabel</td><td>specify the hdf5 dataset label to be checked.</td></tr>
  </table>
  </dd>
</dl>
<p>Returns the stored matrix type. This is an identifier compatible with the CvMat type system, like e.g. CV_16SC5 (16-bit signed 5-channel array), and so on.</p>
<dl class="section note"><dt>Note</dt><dd>Result can be parsed with <a class="el" href="../../db/de0/group__core__utils.html#ga645f5d1efbab7bb8fdd460df6e633ebc">CV_MAT_CN()</a> to obtain amount of channels and <a class="el" href="../../d1/d1b/group__core__hal__interface.html#ga39f3412d63cac68d4f1d138ab52a6fc8">CV_MAT_DEPTH()</a> to obtain native cvdata type. It is thread safe. </dd></dl>

</div>
</div>
<a id="a066531c8c803361851b278667f5442a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a066531c8c803361851b278667f5442a7">&#9670;&nbsp;</a></span>dsinsert() <span class="overload">[1/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dsinsert </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>Array</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="af3df2e41bad99a4b74c915567f84a3b0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af3df2e41bad99a4b74c915567f84a3b0">&#9670;&nbsp;</a></span>dsinsert() <span class="overload">[2/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dsinsert </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>Array</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>dims_offset</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a12a80b308989a80f72cdfe88f1b6e935"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12a80b308989a80f72cdfe88f1b6e935">&#9670;&nbsp;</a></span>dsinsert() <span class="overload">[3/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dsinsert </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>Array</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>dims_offset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>dims_counts</em> = <code>vector&lt;&#160;int&#160;&gt;()</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a8ed41a770f3b262ba62d8e51ff91e9bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ed41a770f3b262ba62d8e51ff91e9bd">&#9670;&nbsp;</a></span>dsinsert() <span class="overload">[4/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dsinsert </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>Array</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>dims_offset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>dims_counts</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Insert or overwrite a <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">Mat</a> object into specified dataset and auto expand dataset size if <b>unlimited</b> property allows. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">Array</td><td>specify <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">Mat</a> data array to be written. </td></tr>
    <tr><td class="paramname">dslabel</td><td>specify the target hdf5 dataset label. </td></tr>
    <tr><td class="paramname">dims_offset</td><td>each array member specify the offset location over dataset's each dimensions from where InputArray will be (over)written into dataset. </td></tr>
    <tr><td class="paramname">dims_counts</td><td>each array member specify the amount of data over dataset's each dimensions from InputArray that will be written into dataset.</td></tr>
  </table>
  </dd>
</dl>
<p>Writes <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">Mat</a> object into targeted dataset and <b>autoexpand</b> dataset dimension if allowed.</p>
<dl class="section note"><dt>Note</dt><dd>Unlike <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#adc4bb3ba821d6ea52a7d8b6b9f623c85">dswrite()</a>, datasets are <b>not</b> created <b>automatically</b>. Only <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">Mat</a> is supported and it must be <b>continuous</b>. If <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a066531c8c803361851b278667f5442a7">dsinsert()</a> happens over outer regions of dataset dimensions and on that dimension of dataset is in <b>unlimited</b> mode then dataset is expanded, otherwise exception is thrown. To create datasets with <b>unlimited</b> property on specific or more dimensions see <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a0f8b59fb69fc0ffeb2abb6e413d00885">dscreate()</a> and the optional H5_UNLIMITED flag at creation time. It is not thread safe over same dataset but multiple datasets can be merged inside a single hdf5 file.</dd></dl>
<ul>
<li>Example below creates <b>unlimited</b> rows x 100 cols and expands rows 5 times with <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a066531c8c803361851b278667f5442a7">dsinsert()</a> using single 100x100 CV_64FC2 over the dataset. Final size will have 5x100 rows and 100 cols, reflecting H matrix five times over row's span. Chunks size is 100x100 just optimized against the H matrix size having compression disabled. If routine is called multiple times dataset will be just overwritten: <div class="fragment"><div class="line"><span class="comment">// dual channel hilbert matrix</span></div><div class="line"><a class="code" href="../../d3/d63/classcv_1_1Mat.html">cv::Mat</a> H(50, 100, <a class="code" href="../../d1/d1b/group__core__hal__interface.html#ga90505db617283cb4ac14f0870ef57021">CV_64FC2</a>);</div><div class="line"><span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; H.rows; i++)</div><div class="line">  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j &lt; H.cols; j++)</div><div class="line">  {</div><div class="line">      H.at&lt;<a class="code" href="../../d6/dcf/classcv_1_1Vec.html">cv::Vec2d</a>&gt;(i,j)[0] =  1./(i+j+1);</div><div class="line">      H.at&lt;<a class="code" href="../../d6/dcf/classcv_1_1Vec.html">cv::Vec2d</a>&gt;(i,j)[1] = -1./(i+j+1);</div><div class="line">      count++;</div><div class="line">  }</div><div class="line"><span class="comment">// open / autocreate hdf5 file</span></div><div class="line"><a class="code" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">cv::Ptr&lt;cv::hdf::HDF5&gt;</a> h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">cv::hdf::open</a>( <span class="stringliteral">&quot;mytest.h5&quot;</span> );</div><div class="line"><span class="comment">// optimise dataset by chunks</span></div><div class="line"><span class="keywordtype">int</span> chunks[2] = { 100, 100 };</div><div class="line"><span class="comment">// create Unlimited x 100 CV_64FC2 space</span></div><div class="line">h5io-&gt;dscreate( cv::hdf::HDF5::H5_UNLIMITED, 100, <a class="code" href="../../d1/d1b/group__core__hal__interface.html#ga90505db617283cb4ac14f0870ef57021">CV_64FC2</a>, <span class="stringliteral">&quot;hilbert&quot;</span>, <a class="code" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">cv::hdf::HDF5::H5_NONE</a>, chunks );</div><div class="line"><span class="comment">// write into first half</span></div><div class="line"><span class="keywordtype">int</span> offset[2] = { 0, 0 };</div><div class="line"><span class="keywordflow">for</span> ( <span class="keywordtype">int</span> t = 0; t &lt; 5; t++ )</div><div class="line">{</div><div class="line">  offset[0] += 100 * t;</div><div class="line">  h5io-&gt;dsinsert( H, <span class="stringliteral">&quot;hilbert&quot;</span>, offset );</div><div class="line">}</div><div class="line"><span class="comment">// release</span></div><div class="line">h5io-&gt;close();</div></div><!-- fragment --> </li>
</ul>

</div>
</div>
<a id="afc0f24683dbce852884f2147a68ddae3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc0f24683dbce852884f2147a68ddae3">&#9670;&nbsp;</a></span>dsread() <span class="overload">[1/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dsread </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a>&#160;</td>
          <td class="paramname"><em>Array</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a6088901b1c715aad6164b27b83262479"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6088901b1c715aad6164b27b83262479">&#9670;&nbsp;</a></span>dsread() <span class="overload">[2/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dsread </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a>&#160;</td>
          <td class="paramname"><em>Array</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>dims_offset</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a849ed15c7d4697f562c2f230332b16fc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a849ed15c7d4697f562c2f230332b16fc">&#9670;&nbsp;</a></span>dsread() <span class="overload">[3/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dsread </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a>&#160;</td>
          <td class="paramname"><em>Array</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>dims_offset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>dims_counts</em> = <code>vector&lt;&#160;int&#160;&gt;()</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a61e2bfc6d35271a160fdfec69c1a2157"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a61e2bfc6d35271a160fdfec69c1a2157">&#9670;&nbsp;</a></span>dsread() <span class="overload">[4/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dsread </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a>&#160;</td>
          <td class="paramname"><em>Array</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>dims_offset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>dims_counts</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Read specific dataset from hdf5 file into <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">Mat</a> object. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">Array</td><td><a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">Mat</a> container where data reads will be returned. </td></tr>
    <tr><td class="paramname">dslabel</td><td>specify the source hdf5 dataset label. </td></tr>
    <tr><td class="paramname">dims_offset</td><td>each array member specify the offset location over each dimensions from where dataset starts to read into OutputArray. </td></tr>
    <tr><td class="paramname">dims_counts</td><td>each array member specify the amount over dataset's each dimensions of dataset to read into OutputArray.</td></tr>
  </table>
  </dd>
</dl>
<p>Reads out <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">Mat</a> object reflecting the stored dataset.</p>
<dl class="section note"><dt>Note</dt><dd>If hdf5 file does not exist an exception will be thrown. Use <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#add5b1b96093a2a28994627cd545e3d9e" title="Check if label exists or not. ">hlexists()</a> to check dataset presence. It is thread safe.</dd></dl>
<ul>
<li>Example below reads a dataset: <div class="fragment"><div class="line"><span class="comment">// open hdf5 file</span></div><div class="line"><a class="code" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">cv::Ptr&lt;cv::hdf::HDF5&gt;</a> h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">cv::hdf::open</a>( <span class="stringliteral">&quot;mytest.h5&quot;</span> );</div><div class="line"><span class="comment">// blank Mat container</span></div><div class="line"><a class="code" href="../../d3/d63/classcv_1_1Mat.html">cv::Mat</a> H;</div><div class="line"><span class="comment">// read hibert dataset</span></div><div class="line">h5io-&gt;read( H, <span class="stringliteral">&quot;hilbert&quot;</span> );</div><div class="line"><span class="comment">// release</span></div><div class="line">h5io-&gt;close();</div></div><!-- fragment --></li>
<li>Example below perform read of 3x5 submatrix from second row and third element. <div class="fragment"><div class="line"><span class="comment">// open hdf5 file</span></div><div class="line"><a class="code" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">cv::Ptr&lt;cv::hdf::HDF5&gt;</a> h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">cv::hdf::open</a>( <span class="stringliteral">&quot;mytest.h5&quot;</span> );</div><div class="line"><span class="comment">// blank Mat container</span></div><div class="line"><a class="code" href="../../d3/d63/classcv_1_1Mat.html">cv::Mat</a> H;</div><div class="line"><span class="keywordtype">int</span> offset[2] = { 1, 2 };</div><div class="line"><span class="keywordtype">int</span> counts[2] = { 3, 5 };</div><div class="line"><span class="comment">// read hibert dataset</span></div><div class="line">h5io-&gt;read( H, <span class="stringliteral">&quot;hilbert&quot;</span>, offset, counts );</div><div class="line"><span class="comment">// release</span></div><div class="line">h5io-&gt;close();</div></div><!-- fragment --> </li>
</ul>

</div>
</div>
<a id="adc4bb3ba821d6ea52a7d8b6b9f623c85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adc4bb3ba821d6ea52a7d8b6b9f623c85">&#9670;&nbsp;</a></span>dswrite() <span class="overload">[1/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dswrite </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>Array</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a575120ad1a8857b1fa2db4cb05488e81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a575120ad1a8857b1fa2db4cb05488e81">&#9670;&nbsp;</a></span>dswrite() <span class="overload">[2/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dswrite </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>Array</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>dims_offset</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a996681e3faff692b8d94502164599ad3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a996681e3faff692b8d94502164599ad3">&#9670;&nbsp;</a></span>dswrite() <span class="overload">[3/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dswrite </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>Array</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>dims_offset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>dims_counts</em> = <code>vector&lt;&#160;int&#160;&gt;()</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a0aa86fc0ec7a74dadd53da977ce0d181"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0aa86fc0ec7a74dadd53da977ce0d181">&#9670;&nbsp;</a></span>dswrite() <span class="overload">[4/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::dswrite </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a>&#160;</td>
          <td class="paramname"><em>Array</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>dslabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>dims_offset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>dims_counts</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Write or overwrite a <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">Mat</a> object into specified dataset of hdf5 file. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">Array</td><td>specify <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">Mat</a> data array to be written. </td></tr>
    <tr><td class="paramname">dslabel</td><td>specify the target hdf5 dataset label. </td></tr>
    <tr><td class="paramname">dims_offset</td><td>each array member specify the offset location over dataset's each dimensions from where InputArray will be (over)written into dataset. </td></tr>
    <tr><td class="paramname">dims_counts</td><td>each array member specifies the amount of data over dataset's each dimensions from InputArray that will be written into dataset.</td></tr>
  </table>
  </dd>
</dl>
<p>Writes <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">Mat</a> object into targeted dataset.</p>
<dl class="section note"><dt>Note</dt><dd>If dataset is not created and does not exist it will be created <b>automatically</b>. Only <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">Mat</a> is supported and it must be <b>continuous</b>. It is thread safe but it is recommended that writes to happen over separate non-overlapping regions. Multiple datasets can be written inside a single hdf5 file.</dd></dl>
<ul>
<li>Example below writes a 100x100 CV_64FC2 matrix into a dataset. No dataset pre-creation required. If routine is called multiple times dataset will be just overwritten: <div class="fragment"><div class="line"><span class="comment">// dual channel hilbert matrix</span></div><div class="line"><a class="code" href="../../d3/d63/classcv_1_1Mat.html">cv::Mat</a> H(100, 100, <a class="code" href="../../d1/d1b/group__core__hal__interface.html#ga90505db617283cb4ac14f0870ef57021">CV_64FC2</a>);</div><div class="line"><span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; H.<a class="code" href="../../d3/d63/classcv_1_1Mat.html#abed816466c45234254d25bc59c31245e">rows</a>; i++)</div><div class="line">  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j &lt; H.<a class="code" href="../../d3/d63/classcv_1_1Mat.html#aa3e5a47585c9ef6a0842556739155e3e">cols</a>; j++)</div><div class="line">  {</div><div class="line">      H.<a class="code" href="../../d3/d63/classcv_1_1Mat.html#aa5d20fc86d41d59e4d71ae93daee9726">at</a>&lt;<a class="code" href="../../d6/dcf/classcv_1_1Vec.html">cv::Vec2d</a>&gt;(i,j)[0] =  1./(i+j+1);</div><div class="line">      H.<a class="code" href="../../d3/d63/classcv_1_1Mat.html#aa5d20fc86d41d59e4d71ae93daee9726">at</a>&lt;<a class="code" href="../../d6/dcf/classcv_1_1Vec.html">cv::Vec2d</a>&gt;(i,j)[1] = -1./(i+j+1);</div><div class="line">      count++;</div><div class="line">  }</div><div class="line"><span class="comment">// open / autocreate hdf5 file</span></div><div class="line"><a class="code" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">cv::Ptr&lt;cv::hdf::HDF5&gt;</a> h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">cv::hdf::open</a>( <span class="stringliteral">&quot;mytest.h5&quot;</span> );</div><div class="line"><span class="comment">// write / overwrite dataset</span></div><div class="line">h5io-&gt;dswrite( H, <span class="stringliteral">&quot;hilbert&quot;</span> );</div><div class="line"><span class="comment">// release</span></div><div class="line">h5io-&gt;close();</div></div><!-- fragment --></li>
<li>Example below writes a smaller 50x100 matrix into 100x100 compressed space optimised by two 50x100 chunks. Matrix is written twice into first half (0-&gt;50) and second half (50-&gt;100) of data space using offset. <div class="fragment"><div class="line"><span class="comment">// dual channel hilbert matrix</span></div><div class="line"><a class="code" href="../../d3/d63/classcv_1_1Mat.html">cv::Mat</a> H(50, 100, <a class="code" href="../../d1/d1b/group__core__hal__interface.html#ga90505db617283cb4ac14f0870ef57021">CV_64FC2</a>);</div><div class="line"><span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; H.<a class="code" href="../../d3/d63/classcv_1_1Mat.html#abed816466c45234254d25bc59c31245e">rows</a>; i++)</div><div class="line">  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j &lt; H.<a class="code" href="../../d3/d63/classcv_1_1Mat.html#aa3e5a47585c9ef6a0842556739155e3e">cols</a>; j++)</div><div class="line">  {</div><div class="line">      H.<a class="code" href="../../d3/d63/classcv_1_1Mat.html#aa5d20fc86d41d59e4d71ae93daee9726">at</a>&lt;<a class="code" href="../../d6/dcf/classcv_1_1Vec.html">cv::Vec2d</a>&gt;(i,j)[0] =  1./(i+j+1);</div><div class="line">      H.<a class="code" href="../../d3/d63/classcv_1_1Mat.html#aa5d20fc86d41d59e4d71ae93daee9726">at</a>&lt;<a class="code" href="../../d6/dcf/classcv_1_1Vec.html">cv::Vec2d</a>&gt;(i,j)[1] = -1./(i+j+1);</div><div class="line">      count++;</div><div class="line">  }</div><div class="line"><span class="comment">// open / autocreate hdf5 file</span></div><div class="line"><a class="code" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">cv::Ptr&lt;cv::hdf::HDF5&gt;</a> h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">cv::hdf::open</a>( <span class="stringliteral">&quot;mytest.h5&quot;</span> );</div><div class="line"><span class="comment">// optimise dataset by two chunks</span></div><div class="line"><span class="keywordtype">int</span> chunks[2] = { 50, 100 };</div><div class="line"><span class="comment">// create 100x100 CV_64FC2 compressed space</span></div><div class="line">h5io-&gt;dscreate( 100, 100, <a class="code" href="../../d1/d1b/group__core__hal__interface.html#ga90505db617283cb4ac14f0870ef57021">CV_64FC2</a>, <span class="stringliteral">&quot;hilbert&quot;</span>, 9, chunks );</div><div class="line"><span class="comment">// write into first half</span></div><div class="line"><span class="keywordtype">int</span> offset1[2] = { 0, 0 };</div><div class="line">h5io-&gt;dswrite( H, <span class="stringliteral">&quot;hilbert&quot;</span>, offset1 );</div><div class="line"><span class="comment">// write into second half</span></div><div class="line"><span class="keywordtype">int</span> offset2[2] = { 50, 0 };</div><div class="line">h5io-&gt;dswrite( H, <span class="stringliteral">&quot;hilbert&quot;</span>, offset2 );</div><div class="line"><span class="comment">// release</span></div><div class="line">h5io-&gt;close();</div></div><!-- fragment --> </li>
</ul>

</div>
</div>
<a id="a8a02caf1f2f90a10221954c55e1c4d81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a02caf1f2f90a10221954c55e1c4d81">&#9670;&nbsp;</a></span>grcreate()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::grcreate </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>grlabel</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Create a group. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">grlabel</td><td>specify the hdf5 group label.</td></tr>
  </table>
  </dd>
</dl>
<p>Create a hdf5 group with default properties. The group is closed automatically after creation.</p>
<dl class="section note"><dt>Note</dt><dd>Groups are useful for better organising multiple datasets. It is possible to create subgroups within any group. Existence of a particular group can be checked using <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#add5b1b96093a2a28994627cd545e3d9e" title="Check if label exists or not. ">hlexists()</a>. In case of subgroups, a label would be e.g: 'Group1/SubGroup1' where SubGroup1 is within the root group Group1. Before creating a subgroup, its parent group MUST be created.</dd></dl>
<ul>
<li><p class="startli">In this example, Group1 will have one subgroup called SubGroup1:</p>
<div class="fragment"><div class="line"></div><div class="line">    Ptr&lt;hdf::HDF5&gt; h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">hdf::open</a>(<span class="stringliteral">&quot;mytest.h5&quot;</span>);</div><div class="line"></div><div class="line">    <span class="comment">// &quot;/&quot; means the root group, which is always present</span></div><div class="line">    <span class="keywordflow">if</span> (!h5io-&gt;hlexists(<span class="stringliteral">&quot;/Group1&quot;</span>))</div><div class="line">       h5io-&gt;grcreate(<span class="stringliteral">&quot;/Group1&quot;</span>);</div><div class="line">    <span class="keywordflow">else</span></div><div class="line">       std::cout &lt;&lt; <span class="stringliteral">&quot;/Group1 has already been created, skip it.\n&quot;</span>;</div><div class="line"></div><div class="line">    <span class="comment">// Note that Group1 has been created above, otherwise exception will occur</span></div><div class="line">    <span class="keywordflow">if</span> (!h5io-&gt;hlexists(<span class="stringliteral">&quot;/Group1/SubGroup1&quot;</span>))</div><div class="line">       h5io-&gt;grcreate(<span class="stringliteral">&quot;/Group1/SubGroup1&quot;</span>);</div><div class="line">    <span class="keywordflow">else</span></div><div class="line">       std::cout &lt;&lt; <span class="stringliteral">&quot;/Group1/SubGroup1 has already been created, skip it.\n&quot;</span>;</div><div class="line"></div><div class="line">    h5io-&gt;close();</div><div class="line"></div></div><!-- fragment --><p> The corresponding result visualized using the HDFView tool is</p>
<div class="image">
<img src="../../create_groups.png" alt="create_groups.png"/>
<div class="caption">
Visualization of groups using the HDFView tool</div></div>
 <dl class="section note"><dt>Note</dt><dd>When a dataset is created with <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a0f8b59fb69fc0ffeb2abb6e413d00885">dscreate()</a> or <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#ae51728375392082e849e035ff940a554" title="Create and allocate special storage for cv::KeyPoint dataset. ">kpcreate()</a>, it can be created within a group by specifying the full path within the label. In our example, it would be: 'Group1/SubGroup1/MyDataSet'. It is not thread safe. </dd></dl>
</li>
</ul>

</div>
</div>
<a id="add5b1b96093a2a28994627cd545e3d9e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#add5b1b96093a2a28994627cd545e3d9e">&#9670;&nbsp;</a></span>hlexists()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool cv::hdf::HDF5::hlexists </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>label</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Check if label exists or not. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">label</td><td>specify the hdf5 dataset label.</td></tr>
  </table>
  </dd>
</dl>
<p>Returns <b>true</b> if dataset exists, and <b>false</b> otherwise.</p>
<dl class="section note"><dt>Note</dt><dd>Checks if dataset, group or other object type (hdf5 link) exists under the label name. It is thread safe. </dd></dl>

</div>
</div>
<a id="ae51728375392082e849e035ff940a554"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae51728375392082e849e035ff940a554">&#9670;&nbsp;</a></span>kpcreate()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::kpcreate </td>
          <td>(</td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>kplabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>compresslevel</em> = <code><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">H5_NONE</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>chunks</em> = <code><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">H5_NONE</a></code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Create and allocate special storage for <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html" title="Data structure for salient point detectors. ">cv::KeyPoint</a> dataset. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">size</td><td>declare fixed number of KeyPoints </td></tr>
    <tr><td class="paramname">kplabel</td><td>specify the hdf5 dataset label, any existing dataset with the same label will be overwritten. </td></tr>
    <tr><td class="paramname">compresslevel</td><td>specify the compression level 0-9 to be used, H5_NONE is default and means no compression. </td></tr>
    <tr><td class="paramname">chunks</td><td>each array member specifies chunking sizes to be used for block I/O, H5_NONE is default and means no compression. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>If the dataset already exists an exception will be thrown. Existence of the dataset can be checked using <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#add5b1b96093a2a28994627cd545e3d9e" title="Check if label exists or not. ">hlexists()</a>.</dd></dl>
<ul>
<li>See example below that creates space for 100 keypoints in the dataset: <div class="fragment"><div class="line"><span class="comment">// open hdf5 file</span></div><div class="line"><a class="code" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">cv::Ptr&lt;cv::hdf::HDF5&gt;</a> h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">cv::hdf::open</a>( <span class="stringliteral">&quot;mytest.h5&quot;</span> );</div><div class="line"><span class="keywordflow">if</span> ( ! h5io-&gt;hlexists( <span class="stringliteral">&quot;keypoints&quot;</span> ) )</div><div class="line">  h5io-&gt;kpcreate( 100, <span class="stringliteral">&quot;keypoints&quot;</span> );</div><div class="line"><span class="keywordflow">else</span></div><div class="line">  printf(<span class="stringliteral">&quot;DS already created, skipping\n&quot;</span> );</div></div><!-- fragment --></li>
</ul>
<dl class="section note"><dt>Note</dt><dd>A value of H5_UNLIMITED for <b>size</b> means <b>unlimited</b> keypoints, thus is possible to expand anytime such dataset by adding or inserting. Presence of H5_UNLIMITED <b>require</b> to define custom chunking. No default chunking will be defined in unlimited scenario since default size on that dimension will be zero, and will grow once dataset is written. Writing into dataset that have H5_UNLIMITED on some of its dimension requires <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a9d9bbb04a2ae548824ec9b2e2b9bea94" title="Insert or overwrite list of KeyPoint into specified dataset and autoexpand dataset size if unlimited ...">kpinsert()</a> that allow growth on unlimited dimension instead of <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#af17cf2bb863e96446ade6da3cd0e63eb" title="Write or overwrite list of KeyPoint into specified dataset of hdf5 file. ">kpwrite()</a> that allows to write only in predefined data space.</dd></dl>
<ul>
<li>See example below that creates unlimited space for keypoints chunking size of 100 but no compression: <div class="fragment"><div class="line"><span class="comment">// open hdf5 file</span></div><div class="line"><a class="code" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">cv::Ptr&lt;cv::hdf::HDF5&gt;</a> h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">cv::hdf::open</a>( <span class="stringliteral">&quot;mytest.h5&quot;</span> );</div><div class="line"><span class="keywordflow">if</span> ( ! h5io-&gt;hlexists( <span class="stringliteral">&quot;keypoints&quot;</span> ) )</div><div class="line">  h5io-&gt;kpcreate( cv::hdf::HDF5::H5_UNLIMITED, <span class="stringliteral">&quot;keypoints&quot;</span>, <a class="code" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">cv::hdf::HDF5::H5_NONE</a>, 100 );</div><div class="line"><span class="keywordflow">else</span></div><div class="line">  printf(<span class="stringliteral">&quot;DS already created, skipping\n&quot;</span> );</div></div><!-- fragment --> </li>
</ul>

</div>
</div>
<a id="ab09e36ab1f7a2336f1ef7b37d9b48752"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab09e36ab1f7a2336f1ef7b37d9b48752">&#9670;&nbsp;</a></span>kpgetsize()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int cv::hdf::HDF5::kpgetsize </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>kplabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>dims_flag</em> = <code><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a429aa799e6d8e9d8fde395d778f46e23">HDF5::H5_GETDIMS</a></code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Fetch keypoint dataset size. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">kplabel</td><td>specify the hdf5 dataset label to be measured. </td></tr>
    <tr><td class="paramname">dims_flag</td><td>will fetch dataset dimensions on H5_GETDIMS, and dataset maximum dimensions on H5_GETMAXDIMS.</td></tr>
  </table>
  </dd>
</dl>
<p>Returns size of keypoints dataset.</p>
<dl class="section note"><dt>Note</dt><dd>Resulting size will match the amount of keypoints. By default H5_GETDIMS will return actual dataset dimension. Using H5_GETMAXDIM flag will get maximum allowed dimension which normally match actual dataset dimension but can hold H5_UNLIMITED value if dataset was prepared in <b>unlimited</b> mode. It can be useful to check existing dataset dimension before overwrite it as whole or subset. Trying to write with oversized source data into dataset target will thrown exception. The H5_GETCHUNKDIMS will return the dimension of chunk if dataset was created with chunking options otherwise returned vector size will be zero. </dd></dl>

</div>
</div>
<a id="a9d9bbb04a2ae548824ec9b2e2b9bea94"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9d9bbb04a2ae548824ec9b2e2b9bea94">&#9670;&nbsp;</a></span>kpinsert()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::kpinsert </td>
          <td>(</td>
          <td class="paramtype">const vector&lt; <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html">KeyPoint</a> &gt;&#160;</td>
          <td class="paramname"><em>keypoints</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>kplabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>offset</em> = <code><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">H5_NONE</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>counts</em> = <code><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">H5_NONE</a></code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Insert or overwrite list of <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html" title="Data structure for salient point detectors. ">KeyPoint</a> into specified dataset and autoexpand dataset size if <b>unlimited</b> property allows. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">keypoints</td><td>specify keypoints data list to be written. </td></tr>
    <tr><td class="paramname">kplabel</td><td>specify the target hdf5 dataset label. </td></tr>
    <tr><td class="paramname">offset</td><td>specify the offset location on dataset from where keypoints will be (over)written into dataset. </td></tr>
    <tr><td class="paramname">counts</td><td>specify the amount of keypoints that will be written into dataset.</td></tr>
  </table>
  </dd>
</dl>
<p>Writes vector&lt;KeyPoint&gt; object into targeted dataset and <b>autoexpand</b> dataset dimension if allowed.</p>
<dl class="section note"><dt>Note</dt><dd>Unlike <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#af17cf2bb863e96446ade6da3cd0e63eb" title="Write or overwrite list of KeyPoint into specified dataset of hdf5 file. ">kpwrite()</a>, datasets are <b>not</b> created <b>automatically</b>. If <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a066531c8c803361851b278667f5442a7">dsinsert()</a> happen over outer region of dataset and dataset has been created in <b>unlimited</b> mode then dataset is expanded, otherwise exception is thrown. To create datasets with <b>unlimited</b> property see <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#ae51728375392082e849e035ff940a554" title="Create and allocate special storage for cv::KeyPoint dataset. ">kpcreate()</a> and the optional H5_UNLIMITED flag at creation time. It is not thread safe over same dataset but multiple datasets can be merged inside single hdf5 file.</dd></dl>
<ul>
<li>Example below creates <b>unlimited</b> space for keypoints storage, and inserts a list of 10 keypoints ten times into that space. Final dataset will have 100 keypoints. Chunks size is 10 just optimized against list of keypoints. If routine is called multiple times dataset will be just overwritten: <div class="fragment"><div class="line"><span class="comment">// generate 10 dummy keypoints</span></div><div class="line">std::vector&lt;cv::KeyPoint&gt; keypoints;</div><div class="line"><span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; 10; i++)</div><div class="line">  keypoints.push_back( <a class="code" href="../../d2/d29/classcv_1_1KeyPoint.html">cv::KeyPoint</a>(i, -i, 1, -1, 0, 0, -1) );</div><div class="line"><span class="comment">// open / autocreate hdf5 file</span></div><div class="line"><a class="code" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">cv::Ptr&lt;cv::hdf::HDF5&gt;</a> h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">cv::hdf::open</a>( <span class="stringliteral">&quot;mytest.h5&quot;</span> );</div><div class="line"><span class="comment">// create unlimited size space with chunk size of 10</span></div><div class="line">h5io-&gt;kpcreate( cv::hdf::HDF5::H5_UNLIMITED, <span class="stringliteral">&quot;keypoints&quot;</span>, -1, 10 );</div><div class="line"><span class="comment">// insert 10 times same 10 keypoints</span></div><div class="line"><span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; 10; i++)</div><div class="line">  h5io-&gt;kpinsert( keypoints, <span class="stringliteral">&quot;keypoints&quot;</span>, i * 10 );</div><div class="line"><span class="comment">// release</span></div><div class="line">h5io-&gt;close();</div></div><!-- fragment --> </li>
</ul>

</div>
</div>
<a id="ab88cf9b28686de24808f5e2c15a0f135"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab88cf9b28686de24808f5e2c15a0f135">&#9670;&nbsp;</a></span>kpread()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::kpread </td>
          <td>(</td>
          <td class="paramtype">vector&lt; <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html">KeyPoint</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>keypoints</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>kplabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>offset</em> = <code><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">H5_NONE</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>counts</em> = <code><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">H5_NONE</a></code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Read specific keypoint dataset from hdf5 file into vector&lt;KeyPoint&gt; object. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">keypoints</td><td>vector&lt;KeyPoint&gt; container where data reads will be returned. </td></tr>
    <tr><td class="paramname">kplabel</td><td>specify the source hdf5 dataset label. </td></tr>
    <tr><td class="paramname">offset</td><td>specify the offset location over dataset from where read starts. </td></tr>
    <tr><td class="paramname">counts</td><td>specify the amount of keypoints from dataset to read.</td></tr>
  </table>
  </dd>
</dl>
<p>Reads out vector&lt;KeyPoint&gt; object reflecting the stored dataset.</p>
<dl class="section note"><dt>Note</dt><dd>If hdf5 file does not exist an exception will be thrown. Use <a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#add5b1b96093a2a28994627cd545e3d9e" title="Check if label exists or not. ">hlexists()</a> to check dataset presence. It is thread safe.</dd></dl>
<ul>
<li>Example below reads a dataset containing keypoints starting with second entry: <div class="fragment"><div class="line"><span class="comment">// open hdf5 file</span></div><div class="line"><a class="code" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">cv::Ptr&lt;cv::hdf::HDF5&gt;</a> h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">cv::hdf::open</a>( <span class="stringliteral">&quot;mytest.h5&quot;</span> );</div><div class="line"><span class="comment">// blank KeyPoint container</span></div><div class="line">std::vector&lt;cv::KeyPoint&gt; keypoints;</div><div class="line"><span class="comment">// read keypoints starting second one</span></div><div class="line">h5io-&gt;kpread( keypoints, <span class="stringliteral">&quot;keypoints&quot;</span>, 1 );</div><div class="line"><span class="comment">// release</span></div><div class="line">h5io-&gt;close();</div></div><!-- fragment --></li>
<li>Example below perform read of 3 keypoints from second entry. <div class="fragment"><div class="line"><span class="comment">// open hdf5 file</span></div><div class="line"><a class="code" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">cv::Ptr&lt;cv::hdf::HDF5&gt;</a> h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">cv::hdf::open</a>( <span class="stringliteral">&quot;mytest.h5&quot;</span> );</div><div class="line"><span class="comment">// blank KeyPoint container</span></div><div class="line">std::vector&lt;cv::KeyPoint&gt; keypoints;</div><div class="line"><span class="comment">// read three keypoints starting second one</span></div><div class="line">h5io-&gt;kpread( keypoints, <span class="stringliteral">&quot;keypoints&quot;</span>, 1, 3 );</div><div class="line"><span class="comment">// release</span></div><div class="line">h5io-&gt;close();</div></div><!-- fragment --> </li>
</ul>

</div>
</div>
<a id="af17cf2bb863e96446ade6da3cd0e63eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af17cf2bb863e96446ade6da3cd0e63eb">&#9670;&nbsp;</a></span>kpwrite()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::hdf::HDF5::kpwrite </td>
          <td>(</td>
          <td class="paramtype">const vector&lt; <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html">KeyPoint</a> &gt;&#160;</td>
          <td class="paramname"><em>keypoints</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga1f6634802eeadfd7245bc75cf3e216c2">String</a> &amp;&#160;</td>
          <td class="paramname"><em>kplabel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>offset</em> = <code><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">H5_NONE</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>counts</em> = <code><a class="el" href="../../d3/d23/classcv_1_1hdf_1_1HDF5.html#a99f441a3503e5515777f8d827b7aec78a86224e6878c1368b3394d579c8921654">H5_NONE</a></code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Write or overwrite list of <a class="el" href="../../d2/d29/classcv_1_1KeyPoint.html" title="Data structure for salient point detectors. ">KeyPoint</a> into specified dataset of hdf5 file. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">keypoints</td><td>specify keypoints data list to be written. </td></tr>
    <tr><td class="paramname">kplabel</td><td>specify the target hdf5 dataset label. </td></tr>
    <tr><td class="paramname">offset</td><td>specify the offset location on dataset from where keypoints will be (over)written into dataset. </td></tr>
    <tr><td class="paramname">counts</td><td>specify the amount of keypoints that will be written into dataset.</td></tr>
  </table>
  </dd>
</dl>
<p>Writes vector&lt;KeyPoint&gt; object into targeted dataset.</p>
<dl class="section note"><dt>Note</dt><dd>If dataset is not created and does not exist it will be created <b>automatically</b>. It is thread safe but it is recommended that writes to happen over separate non overlapping regions. Multiple datasets can be written inside single hdf5 file.</dd></dl>
<ul>
<li>Example below writes a 100 keypoints into a dataset. No dataset precreation required. If routine is called multiple times dataset will be just overwritten: <div class="fragment"><div class="line"><span class="comment">// generate 100 dummy keypoints</span></div><div class="line">std::vector&lt;cv::KeyPoint&gt; keypoints;</div><div class="line"><span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; 100; i++)</div><div class="line">  keypoints.push_back( <a class="code" href="../../d2/d29/classcv_1_1KeyPoint.html">cv::KeyPoint</a>(i, -i, 1, -1, 0, 0, -1) );</div><div class="line"><span class="comment">// open / autocreate hdf5 file</span></div><div class="line"><a class="code" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">cv::Ptr&lt;cv::hdf::HDF5&gt;</a> h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">cv::hdf::open</a>( <span class="stringliteral">&quot;mytest.h5&quot;</span> );</div><div class="line"><span class="comment">// write / overwrite dataset</span></div><div class="line">h5io-&gt;kpwrite( keypoints, <span class="stringliteral">&quot;keypoints&quot;</span> );</div><div class="line"><span class="comment">// release</span></div><div class="line">h5io-&gt;close();</div></div><!-- fragment --></li>
<li>Example below uses smaller set of 50 keypoints and writes into compressed space of 100 keypoints optimised by 10 chunks. Same keypoint set is written three times, first into first half (0-&gt;50) and at second half (50-&gt;75) then into remaining slots (75-&gt;99) of data space using offset and count parameters to settle the window for write access.If routine is called multiple times dataset will be just overwritten: <div class="fragment"><div class="line"><span class="comment">// generate 50 dummy keypoints</span></div><div class="line">std::vector&lt;cv::KeyPoint&gt; keypoints;</div><div class="line"><span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; 50; i++)</div><div class="line">  keypoints.push_back( <a class="code" href="../../d2/d29/classcv_1_1KeyPoint.html">cv::KeyPoint</a>(i, -i, 1, -1, 0, 0, -1) );</div><div class="line"><span class="comment">// open / autocreate hdf5 file</span></div><div class="line"><a class="code" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">cv::Ptr&lt;cv::hdf::HDF5&gt;</a> h5io = <a class="code" href="../../d6/dee/group__hdf5.html#ga243d7e303690af3c5c3686ca5785205e">cv::hdf::open</a>( <span class="stringliteral">&quot;mytest.h5&quot;</span> );</div><div class="line"><span class="comment">// create maximum compressed space of size 100 with chunk size 10</span></div><div class="line">h5io-&gt;kpcreate( 100, <span class="stringliteral">&quot;keypoints&quot;</span>, 9, 10 );</div><div class="line"><span class="comment">// write into first half</span></div><div class="line">h5io-&gt;kpwrite( keypoints, <span class="stringliteral">&quot;keypoints&quot;</span>, 0 );</div><div class="line"><span class="comment">// write first 25 keypoints into second half</span></div><div class="line">h5io-&gt;kpwrite( keypoints, <span class="stringliteral">&quot;keypoints&quot;</span>, 50, 25 );</div><div class="line"><span class="comment">// write first 25 keypoints into remained space of second half</span></div><div class="line">h5io-&gt;kpwrite( keypoints, <span class="stringliteral">&quot;keypoints&quot;</span>, 75, 25 );</div><div class="line"><span class="comment">// release</span></div><div class="line">h5io-&gt;close();</div></div><!-- fragment --> </li>
</ul>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>opencv2/hdf/<a class="el" href="../../de/d24/hdf5_8hpp.html">hdf5.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.8.6-->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Apr 2 2021 11:36:47 for OpenCV by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
<script type="text/javascript">
//<![CDATA[
addTutorialsButtons();
//]]>
</script>
</body>
</html>
